package com.atguigu.java2;

import org.junit.Test;

import java.util.*;

/**
 * 一、集合框架的概述：
 *
 * 1.集合、数组都是对多个数据进行储存操作的结构，简称java容器
 *   说明：此时的储存主要指的是内存方面的储存，不涉及到持久化的存储(.txt,,jpg,.avi,数据库中)
 *
 * 2.数组在存储多个数据的特点:
 *      >一旦初始化以后，长度就确定了。
 *      >一旦定义好，其元素类型就已经确定了,我们也就只能操作指定类型的数据了
 *      >比如：String[] arr,int[] arr1;Object[] arr2
 * 2.2数组在存储多个数据的缺点
 *      >一旦初始化以后，长度就不可修改
 *      >数组中提供的方法非常有限，对于添加、删除、插入数据等操作，非常不方便,同时效率不高
 *      >获取数组中实际元素个数的需求，数组没有现成的方法或属性可用
 *      >数组存储数据的特点：有序性、可重复性。对于无序、不可重复的需求，无法满足
 *
 * 二、集合框架
 *      |-----Collection接口：单列集合，用来储存一个一个的对象
 *
 *          |------List接口：存储有序的，可重复的数据。--->“动态数组”
 *              |-----ArrayList、LinkList、Vector
 *          |------set接口：存储无序的，不可重复的数据。 --->高中讲的集合
 *              |-----HashSet、LinkSet、TreeSet
 *
 *     |-----Map接口：双列集合，用来储存一对(key - value)一对的对象 --->高中的函数：y = f(x)
 *              |-----HashMap、LinkedHashMap、TreeMap、Hashtable、Properties
 *
 * 三、Collection接口中的方法的使用：
 *
 */
public class CollectionTest {
    @Test
    public void test1(){
        Collection coll = new ArrayList();

        //add(Object e):将元素e添加到集合coll中
        coll.add("AA");
        coll.add("BB");
        coll.add(123);//自动装箱
        coll.add(new Date());

        //size()获取添加元素的个数
        System.out.println(coll.size());//4

        //addAll(Collection coll1):将coll1集合中的元素添加到当前的集合中
        Collection coll1 = new ArrayList();
        coll1.add(123);
        coll1.add("AA");
        coll.addAll(coll1);

        System.out.println(coll.size());//6
        System.out.println(coll);

        //clear():清空集合元素
        coll.clear();

        //isEmpty():判断当前集合是否为空
        System.out.println(coll.isEmpty());

    }

    @Test
    public void test2(){
        List list = new LinkedList();
    }
}
